mistral: improve ALM packing in LABs #1170
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current ALM packing code overestimates LAB TD congestion due to not accounting for sharing across ALMs.
Recently, I tried to resolve this by hashing the signal names, but this actually underestimated LAB TD congestion, because the TD-to-GOUT (ALM input) crossbar is not fully populated. The solution to this is to hash signal-and-ALM-input pairs, which still results in a distinct reduction in LAB use for attosoc, from 133 to 123 LABs.
I am a bit concerned about the impact on performance here; while it's still "fine" for small designs, perhaps @gatecat might have an alternative implementation based on the existing
unique_input_count
code minus some incrementally-updated factor for signal sharing.This code also does not take into account LD usage, which would need some further thinking.